// 文件上传
var 
	 raw 		= Request.binaryRead(Request.totalBytes)
	// 通过stringData解析上传档案
	,stringData = (function(){
						// 复制一份，文本的
						with(new ActiveXObject('adodb.stream')){
							type =2;
							open();
							writeText(raw);
							position = 0;
							charset = "us-ascii";
							position = 2;
							stringData = readText();
							close();
							/*
							 * 转换为文本之后，其大小应与请求的二进制字节大小相等。否则被视为转换错误，代码中立刻抛出异常！
							 */
							if(stringData.length != Request.totalBytes){
								throw "网络或硬件错误 不能上传文件原因Size不匹配";	
							}
							// stringData显示不完整，但可以读取???
							return stringData;
						}		
					})()
	,splitToken = /.*(\-{27}[a-z0-9]+)/
	,splitToken = Request.ServerVariables("HTTP_CONTENT_TYPE")().replace(splitToken, "--$1")
	,splitToken = new RegExp( '(\\r\\n)?' + splitToken + "(\-\-\\r\\n)?")
	,splitToken = stringData.split(splitToken)
	,files 		= _each(splitToken, function(disposition /* 每一笔上传的档案 */){
		var 
			 parser	= new FileParser(disposition, stringData)
			,file	= parser.file;
			
		if(parser == 'continue'){
			return 'continue';
		}
		
		if(file){
			with(this[1]){ // 将二进制流（Stream）保存到磁盘，形成文件。
				type = 1;
				open();
				position = 0;
				this[0].position = file.start;
				write(this[0].read(file.size));
				
				saveToFile(file.path, 2);
				close();
			}

			this[2].push(file);
		};
	}, [
		// holder
		// 设置一容器收集二进制数据，Byte []存放在adodb.stream对象中。
		(function(bin){
			with(bin){
				type = 1;
				open();
				write(raw);						
			}
			return bin;
		})(new ActiveXObject('adodb.stream') )
		// writer
		,new ActiveXObject('adodb.stream')
		,[]
	])[2];
	
	var 
		 resp_Script = '<scri' + 'pt>alert("上传成功！");parent.uploadSuccessful_hander({0});</script>'
		,resp_Script = resp_Script.format(new $$.JSON().toJSON(files));
		
	Response.write(resp_Script);